package com.muyan.sys.common.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class ChineseMythNicknameGenerator {

    // 中国神话相关的形容词
    private static final String[] ADJECTIVES = {
            "神秘", "威严", "慈悲", "勇猛", "刚烈", "温和", "睿智", "狡黠", "残暴", "善良",
            "圣洁", "邪恶", "灵动", "古朴", "超凡", "诡异", "雄浑", "清幽", "凌厉", "柔和",
            "奇异", "神圣", "阴森", "豪迈", "婉约", "磅礴", "静谧", "炽热", "冰冷", "飘逸",
            "厚重", "轻灵", "绮丽", "雄浑", "玄奥", "苍茫", "璀璨", "幽邃", "旷达", "恬静",
            "暴躁", "沉稳", "潇洒", "憨厚", "机灵", "鲁莽", "谨慎", "豁达", "狭隘", "大气",
            "小气", "端庄", "妖媚", "俊朗", "丑陋", "高贵", "低贱", "纯洁", "污浊", "正直",
            "奸邪", "忠诚", "叛逆", "宽容", "计较", "坦率", "隐晦", "乐观", "悲观", "勇敢",
            "怯懦", "坚强", "脆弱", "慷慨", "吝啬", "勤劳", "懒惰", "敏捷", "迟缓", "聪慧",
            "愚笨", "果断", "犹豫", "温柔", "粗暴", "细心", "粗心", "随和", "孤僻", "真诚",
            "虚伪"
    };

    // 中国神话相关的名词
    private static final String[] NOUNS = {
            // 神祇
            "盘古", "女娲", "伏羲", "神农", "黄帝", "炎帝", "颛顼", "帝喾", "尧", "舜", "禹",
            "西王母", "东王公", "玉皇大帝", "王母娘娘", "太上老君", "元始天尊", "灵宝天尊",
            "太白金星", "托塔李天王", "哪吒", "二郎神杨戬", "三圣母", "嫦娥", "后羿",
            "夸父", "精卫", "妈祖", "土地公", "灶王爷", "雷公", "电母", "风伯", "雨师",
            "钟馗", "文曲星", "武曲星", "赤脚大仙", "汉钟离", "张果老", "吕洞宾", "铁拐李",
            "何仙姑", "蓝采和", "韩湘子", "曹国舅", "九天玄女", "斗战胜佛孙悟空", "净坛使者猪八戒",
            "金身罗汉沙悟净", "八部天龙广力菩萨小白龙", "大势至菩萨", "文殊菩萨", "普贤菩萨",
            "地藏王菩萨", "观音菩萨", "弥勒佛", "燃灯古佛", "毗卢遮那佛", "药师佛",
            "日光菩萨", "月光菩萨", "韦驮菩萨", "龙树菩萨", "无著菩萨", "世亲菩萨",
            // 妖魔
            "蚩尤", "饕餮", "混沌", "梼杌", "穷奇", "旱魃", "相柳", "九婴", "商羊", "魑魅",
            "魍魉", "夜叉", "罗刹", "狐妖", "蛇妖", "蜘蛛精", "蝎子精", "白骨精", "玉兔精",
            "金角大王", "银角大王", "青牛精", "黄风怪", "红孩儿", "九头虫", "灵感大王",
            "六耳猕猴", "大鹏金翅雕", "牛魔王", "铁扇公主", "玉面狐狸", "百眼魔君",
            "狮驼王", "猕猴王", "禺狨王", "蛟魔王", "鹏魔王", "白象精", "狮子精",
            // 法宝
            "盘古斧", "开天斧", "太极图", "混沌钟", "诛仙剑阵", "诛仙四剑", "番天印",
            "玲珑宝塔", "紫金红葫芦", "羊脂玉净瓶", "幌金绳", "七星剑", "芭蕉扇",
            "金刚琢", "九齿钉耙", "降妖宝杖", "如意金箍棒", "风火轮", "火尖枪",
            "阴阳双剑", "乾坤圈", "混天绫", "七宝玲珑塔", "紫金钵盂", "净瓶杨柳枝",
            "宝莲灯", "照妖镜", "追魂伞", "量天尺", "落宝金钱", "捆仙绳", "三尖两刃刀",
            "天罡刀", "钉头七箭书", "山河社稷图", "河图洛书", "地书", "青萍剑",
            "紫电锤", "渔鼓", "花篮", "横笛", "荷花", "玉板", "洞箫", "葫芦",
            // 地点
            "昆仑山", "蓬莱仙岛", "方丈仙山", "瀛洲仙岛", "花果山", "火焰山", "流沙河",
            "通天河", "东海龙宫", "西海龙宫", "南海龙宫", "北海龙宫", "幽冥地府",
            "酆都鬼城", "天庭", "凌霄宝殿", "蟠桃园", "瑶池", "兜率宫", "紫霄宫",
            "普陀山", "五台山", "峨眉山", "九华山", "终南山", "武夷山", "武当山",
            "龙虎山", "青城山", "崆峒山", "云梦泽", "不周山", "归墟", "汤谷",
            "昧谷", "玄圃", "阆风巅", "昆仑虚", "积石山", "弱水三千", "黄泉路",
            "奈何桥", "望乡台", "三生石",
            // 法术
            "天罡三十六变", "地煞七十二变", "九转玄功", "大品天仙诀", "袖里乾坤",
            "移山填海", "驾雾腾云", "撒豆成兵", "点石成金", "呼风唤雨", "拘神遣将",
            "穿墙术", "隐身术", "定身术", "分身术", "灵魂出窍", "瞬移术", "五行遁术",
            "掌心雷", "三昧真火", "玄冰神雷", "降龙十八掌", "太极剑法", "独孤九剑",
            "六脉神剑", "黯然销魂掌", "蛤蟆功", "九阴真经", "九阳神功", "易筋经",
            "洗髓经", "北冥神功", "小无相功", "凌波微步", "梯云纵", "神行百变",
            "八荒六合唯我独尊功", "天山折梅手", "天山六阳掌", "降龙伏虎拳",
            "韦陀掌", "金刚不坏体神功", "拈花指", "一阳指", "弹指神通", "碧海潮生曲",
            "玉女心经", "打狗棒法", "龙象般若功", "乾坤大挪移", "七伤拳", "幻阴指",
            "玄冥神掌", "梯云纵", "金蛇剑法", "辟邪剑法", "葵花宝典",
            // 其他
            "鸿蒙紫气", "先天灵宝", "后天灵宝", "仙果", "蟠桃", "人参果", "灵芝",
            "仙草", "仙丹", "金丹", "符箓", "卦象", "星辰", "星宿", "天河", "鹊桥",
            "龙鳞", "凤羽", "麒麟角", "龟甲", "仙兽", "神兽", "妖禽", "灵虫", "法宝碎片",
            "神器碎片", "天材地宝", "奇珍异宝", "洞天福地", "福地洞天", "仙缘",
            "机缘", "劫数", "轮回", "因果", "业力", "功德", "气运", "龙脉", "灵脉",
            "仙气", "灵气", "魔气", "妖气", "鬼气", "怨气", "煞气", "戾气", "祥瑞",
            "征兆", "预言", "天书", "地书", "人书", "符咒", "阵法", "八卦阵",
            "迷魂阵", "五行阵", "七星阵", "九宫阵", "天罡北斗阵", "两仪微尘阵",
            "万仙阵", "诛仙阵", "九曲黄河阵", "十绝阵", "混元河洛大阵", "诛神阵"
    };

    private static final Random RANDOM = new Random();

    /**
     * 生成一个随机昵称，格式为形容词 + 名词
     * @return 随机生成的昵称
     */
    public static String generateSimpleNickname() {
        String adjective = ADJECTIVES[RANDOM.nextInt(ADJECTIVES.length)];
        String noun = NOUNS[RANDOM.nextInt(NOUNS.length)];
        return adjective + noun;
    }

    /**
     * 生成一个带数字后缀的随机昵称，格式为形容词 + 名词 + 数字
     * @param min 数字后缀的最小值
     * @param max 数字后缀的最大值
     * @return 带数字后缀的随机昵称
     */
    public static String generateNicknameWithNumber(int min, int max) {
        String simpleNickname = generateSimpleNickname();
        int number = RANDOM.nextInt(max - min + 1) + min;
        return simpleNickname + number;
    }

    /**
     * 批量生成随机昵称
     * @param count 要生成的昵称数量
     * @param min 数字后缀的最小值（如果不需要数字后缀，可将 min 和 max 设为相同值）
     * @param max 数字后缀的最大值
     * @return 包含多个随机昵称的列表
     */
    public static List<String> generateNicknames(int count, int min, int max) {
        List<String> nicknames = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            nicknames.add(generateNicknameWithNumber(min, max));
        }
        return nicknames;
    }

    public static void main(String[] args) {
        // 生成一个简单的随机昵称
        String simpleNickname = generateSimpleNickname();
        System.out.println("简单随机昵称: " + simpleNickname);

        // 生成一个带数字后缀的随机昵称
        String nicknameWithNumber = generateNicknameWithNumber(1, 100);
        System.out.println("带数字后缀的随机昵称: " + nicknameWithNumber);

        // 批量生成随机昵称
        List<String> nicknames = generateNicknames(5, 1, 100);
        System.out.println("批量生成的随机昵称:");
        for (String nickname : nicknames) {
            System.out.println(nickname);
        }
    }
}